home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus Special 23 / AMIGAplus Sonderheft 23 (2000)(Falke)(DE)[!].iso / Tools / Text-Viewer / Notes / deutsch / Noten.pprx < prev    next >
Text File  |  1999-11-06  |  19KB  |  692 lines

  1. /*
  2. @B Noten V.1.2 @P@ICopyright A.Faust 99
  3. dieses Genie zeichnet Notenlinien und Noten
  4. */
  5.  
  6. /* History
  7.  
  8. Version 1.1. (2.2.99)
  9.    -einige Fehler in den #?.file Files beseitigt
  10.    -die Notation im Notenfile geändert
  11.     (wenn Auflösungszeichen - "a" - dann die gleiche
  12.      Notation in einer Zeile wie in allen anderen Fällen)
  13.  
  14. Version 1.2  (10.2.99)
  15.    -Fehler bei der Eingabe von B-Vorzeichen beseitigt (z.B."AB3")
  16.    -Vorzeichenroutine vereinfacht
  17.    -Möglichkeit für einfache Notenliniensysteme mit nur einem
  18.     Notenschlüssel (Bindfadenstimme)
  19.    -Zusammenfassung mehrerer Abfragen in einem Requester
  20.    -Erweiterung des Bereiches im Violinschlüssel
  21. */
  22.  
  23.  
  24. address command
  25.  
  26. 'execute C:AssignNotenDruck'
  27.  
  28.  
  29. /* Das File "AssignNotenDruck"  im C: Verzeichnis muß mit einem normalen
  30.    Texteditor erstellt werden, und legt fest, wo die Notenfiles
  31.    gespeichert sind. Das macht die Auswahl später einfacher.
  32.    Das Genie sucht zuerst im festgelegten Verzeichnis "Noten:"
  33.  
  34.    z.B.
  35.    assign Noten: Work:MeinNotenFileVerzeichnis
  36.  
  37.    Als zweite Zeile MUSS ein Assign für das Genie-Verzeichnis von Propage
  38.    gesetzt werden.
  39.  
  40.    z.B.
  41.    assign Genies: DTP:ProPage/ARexx
  42.  
  43. */
  44.  
  45. call SafeEndEdit.rexx()
  46. call ppm_AutoUpdate(0)
  47. call ppm_SetWireframe(0)
  48. notex=0
  49. notey=0
  50. call ppm_SetLineWeight(0.25)
  51. call ppm_SetMagMode(300)
  52. call ppm_SetBoxOutlines(0)
  53.  
  54. signal on halt
  55. signal on break_c
  56. signal on break_e
  57. signal on break_d
  58.  
  59.  
  60. start:
  61. do
  62.   neu = ppm_GetUserText(2, "Neubeginn? (ALLES WIRD GELÖSCHT !!!!) Nichts=ABBRUCH j/n")
  63.     if neu == "J" then neu = "j"
  64.     if neu == "N" then neu = "n"
  65.  
  66.   select
  67.     when neu == "j" then
  68.         do
  69.         sicher =
  70.         call ppm_New()
  71.         call ppm_SetUnits(2)
  72.         call ppm_SetMagMode(200)
  73.         call ppm_SetFont('(CG)Times')
  74.         pgnm = ppm_CreatePage(1, 1, 0)
  75.         call ppm_SetPageType(pgnm, 4)
  76.         call ppm_SetRulerType(4)
  77.         call ppm_SetBoxLock(0, 0)
  78.         call ppm_DeleteBox(0)
  79.  
  80.         /* Kopfzeile */
  81.  
  82.         haedln = ppm_CreateBox(4, 0.2, 11.5, 1.2, 0)
  83.         call ppm_SetSize(20)
  84.         call ppm_SetStyle(U)
  85.         call ppm_SetJustification(2)
  86.         call ppm_TextIntoBox(haedln, 'Text')
  87.         end
  88.     when neu == "n" then notenlinien()
  89.     otherwise exit_msg("ABBRUCH!")
  90.   end
  91.  
  92. notenlinien:
  93.   cr = '0a'x
  94.   form = "Notenlinien ?  (j/n):j"cr"2/1 System (2/1v/1b):2"cr"Vorzeichen  (1#=1 #):"cr"Taktart    (4/4=4 4):4 4"cr"V_iol/B_aß   [F_ile]:v"
  95.   eingabe = ppm_GetForm("Bitte eingeben ...             ", 5, form)
  96.   parse var eingabe res '0a'x systemart '0a'x vorz '0a'x takt '0a'x violbass
  97.   if systemart == '1B' then systemart = '1b'
  98.   if systemart == '1V' then systemart = '1v'
  99.   if res == '' then res = 'j'
  100.   if res == 'J' then res = 'j'
  101.   if res == 'j' then
  102.   do
  103.  
  104.         call ppm_SetUnits(2)
  105.         call ppm_SetMagMode(200)
  106.         call ppm_SetFont('(CG)Times')
  107.         pgnm = ppm_CurrentPage()
  108.         call ppm_SetPageType(pgnm, 4)
  109.         call ppm_SetRulerType(4)
  110.         call ppm_SetBoxLock(0, 0)
  111.         call ppm_DeleteBox(0)
  112.  
  113.         /* Kopfzeile */
  114.  
  115.         haedln = ppm_CreateBox(4, 0.2, 11.5, 1.2, 0)
  116.         call ppm_SetSize(20)
  117.         call ppm_SetStyle(U)
  118.         call ppm_SetJustification(2)
  119.         call ppm_TextIntoBox(haedln, 'Titel')
  120.  
  121.         /* Autor */
  122.  
  123.         autor = ppm_CreateBox(13, 0.9, 6.5, 0.64, 0)
  124.         call ppm_SetSize(12)
  125.         call ppm_SetStyle(U)
  126.         call ppm_SetJustification(1)
  127.         call ppm_TextIntoBox(autor, "Satz: © Autor")
  128.  
  129.  
  130.      /* Notenlinien ziehen */
  131.  
  132.      do a=1 to 12
  133.        do b=1 to 5
  134.           call ppm_DrawLine(0, a*2+((b-1)/5), 19.5, a*2+((b-1)/5))
  135.        end
  136.      end
  137.  
  138.      /* Notenschlüssel und vordere Klammern */
  139.      if systemart == '1v' then
  140.      do
  141.         call ppm_SetFont('(CG)Noten')
  142.  
  143.         violschl = ppm_CreateBox(0, 1.55, 1, 1.6, 0)
  144.         call ppm_SetStyle(N)
  145.         call ppm_SetJustification(0)
  146.         call ppm_SetSize(45)
  147.         call ppm_TextIntoBox(violschl, 't')
  148.  
  149.         do c=1 to 11
  150.           call ppm_CloneBox(violschl, 0, (c*2))
  151.         end
  152.      end
  153.  
  154.      if systemart == '1b' then
  155.      do
  156.         call ppm_SetFont('(CG)Noten')
  157.  
  158.         bassschl = ppm_CreateBox(0.034, 1.88, 1.1, 1.1, 0)
  159.         call ppm_SetStyle(N)
  160.         call ppm_SetJustification(0)
  161.         call ppm_SetSize(30)
  162.         call ppm_TextIntoBox(bassschl, 'b')
  163.  
  164.         do c=1 to 11
  165.           call ppm_CloneBox(bassschl, 0, (c*2))
  166.         end
  167.      end
  168.  
  169.      if systemart == '2' then
  170.      do
  171.         call ppm_SetFont('(CG)Noten')
  172.  
  173.         violschl = ppm_CreateBox(0, 1.55, 1, 1.6, 0)
  174.         call ppm_SetStyle(N)
  175.         call ppm_SetJustification(0)
  176.         call ppm_SetSize(45)
  177.         call ppm_TextIntoBox(violschl, 't')
  178.  
  179.         bassschl = ppm_CreateBox(0.034, 3.88, 1.1, 1.1, 0)
  180.         call ppm_SetSize(30)
  181.         call ppm_TextIntoBox(bassschl, 'b')
  182.  
  183.         call ppm_SetLineWeight(4)
  184.         vl = ppm_DrawLine(0, 1.98, 0, 4.82)
  185.  
  186.         call ppm_SetLineWeight(2)
  187.         vo = ppm_DrawLine(-0.07, 2.08, 0.303, 1.7627)
  188.         vu = ppm_DrawLine(-0.07, 4.74, 0.303, 5.052)
  189.  
  190.         do c=1 to 5
  191.           call ppm_CloneBox(violschl, 0, (c*4))
  192.           call ppm_CloneBox(bassschl, 0, (c*4))
  193.           call ppm_CloneBox(vl, 0, (c*4))
  194.           call ppm_CloneBox(vo, 0, (c*4))
  195.           call ppm_CloneBox(vu, 0, (c*4))
  196.         end
  197.      end
  198.      vorzeichen()
  199.   end
  200.   else
  201.   do
  202.    if res == 'N' then res = 'n'
  203.    if res == 'n' then vorzeichen()
  204.    else start()
  205.   end
  206. end
  207.  
  208. noteneingabe:
  209.  if violbass == '' then notenlinien()
  210.  resa = word(violbass,1)
  211.  resb = word(violbass,2)
  212.  if resa=='V' then resa = 'v'
  213.  if resa=='B' then resa = 'b'
  214.  if resb=='F' then resb = 'f'
  215.  select
  216.    when resa=='v' then violschl()
  217.    when resa=='b' then basschl()
  218.    otherwise noteneingabe()
  219.  end
  220.  
  221. violschl:
  222.  do
  223.  call ppm_SetFont('(CG)Noten')
  224.  select
  225.     when resb='' then
  226.     do
  227.      address command
  228.      rx 'Genies:Violinenschlüssel.rexx'
  229.     end
  230.     when resb='f' then
  231.     do
  232.      address command
  233.      rx 'Genies:Violinenschlüssel.file'
  234.     end
  235.     otherwise noteneingabe()
  236.  end
  237.  exit
  238.  end
  239.  
  240. basschl:
  241.  do
  242.  call ppm_SetFont('(CG)Noten')
  243.  select
  244.     when resb='' then
  245.     do
  246.      address command
  247.      rx 'Genies:Bassschlüssel.rexx'
  248.     end
  249.     when resb='f' then
  250.     do
  251.      address command
  252.      rx 'Genies:Bassschlüssel.file'
  253.     end
  254.     otherwise noteneingabe()
  255.  end
  256.  exit
  257.  end
  258.  
  259. exit
  260.  
  261. vorzeichen:
  262.  
  263. if vorz == "" then
  264. do
  265.   k = 0
  266.   takt()
  267. end
  268.  
  269. else
  270. do
  271.    call ppm_SetFont('(CG)Noten')
  272.    call ppm_SetSize(20)
  273.    zahl = word(vorz, 1)
  274.    if zahl >6 then vorzeichen()
  275.    art  = word(vorz, 2)
  276.    if art == 'B' then art = 'b'
  277.    yy = 0.28
  278.    j = 0
  279.    k = zahl
  280.  select
  281.    when art == 'b' then
  282.    do
  283.    art = 'f'
  284.       if systemart == '2' then
  285.       do
  286.         do i=1 to 6
  287.            if zahl== 1 then
  288.              do
  289.                call vorzeichenbox 1, (1.95+j)
  290.                call vorzeichenbox 1, (4.15+j)
  291.              end
  292.  
  293.            if zahl == 2 then
  294.              do
  295.                call vorzeichenbox 1, (1.95+j)
  296.                call vorzeichenbox 1, (4.15+j)
  297.                call vorzeichenbox 1.2, (1.65+j)
  298.                call vorzeichenbox 1.2, (3.85+j)
  299.              end
  300.  
  301.            if zahl == 3 then
  302.              do
  303.                call vorzeichenbox 1, (1.95+j)
  304.                call vorzeichenbox 1, (4.15+j)
  305.                call vorzeichenbox 1.2, (1.65+j)
  306.                call vorzeichenbox 1.2, (3.85+j)
  307.                call vorzeichenbox 1.4, (2.05+j)
  308.                call vorzeichenbox 1.4, (4.25+j)
  309.              end
  310.  
  311.            if zahl == 4 then
  312.              do
  313.              call vorzeichenbox 1, (1.95+j)
  314.              call vorzeichenbox 1, (4.15+j)
  315.              call vorzeichenbox 1.2, (1.65+j)
  316.              call vorzeichenbox 1.2, (3.85+j)
  317.              call vorzeichenbox 1.4, (2.05+j)
  318.              call vorzeichenbox 1.4, (4.25+j)
  319.              call vorzeichenbox 1.6, (1.75+j)
  320.              call vorzeichenbox 1.6, (3.95+j)
  321.              end
  322.  
  323.            if zahl == 5 then
  324.              do
  325.              call vorzeichenbox 1, (1.95+j)
  326.              call vorzeichenbox 1, (4.15+j)
  327.              call vorzeichenbox 1.2, (1.65+j)
  328.              call vorzeichenbox 1.2, (3.85+j)
  329.              call vorzeichenbox 1.4, (2.05+j)
  330.              call vorzeichenbox 1.4, (4.25+j)
  331.              call vorzeichenbox 1